#!/usr/bin/env python
# encoding: utf-8
'''
@author: Excelsiorly
@license: (C) Copyright 2022, All Rights Reserved.
@contact: excelsiorly@qq.com
@file: 053. 最大子序和.py
@time: 2022/1/6 13:48
@desc: https://leetcode-cn.com/problems/maximum-subarray/
> 给你一个整数数组 nums ，请你找出一个具有最大和的连续子数组（子数组最少包含一个元素），返回其最大和。
子数组 是数组中的一个连续部分。

@解题思路：
    1. dp
    2. 同：https://leetcode-cn.com/problems/lian-xu-zi-shu-zu-de-zui-da-he-lcof/
    3. Ot(n), Os(1)
'''
class Solution(object):
    def maxSubArray(self, nums):
        """
        :type nums: List[int]
        :rtype: int
        """
        sum, ans = 0, nums[0]
        for num in nums:
            sum = max(sum+num, num)
            ans = max(sum, ans)
        return ans